// package com.dd.controller;

// import com.dd.model.AQIData; // 确保您有这个模型类
// import com.dd.service.AQIDataService; // 确保您有这个服务类
// import javafx.fxml.FXML;
// import javafx.scene.chart.CategoryAxis;
// import javafx.scene.chart.LineChart;
// import javafx.scene.chart.NumberAxis;
// import javafx.scene.chart.XYChart;
// import javafx.stage.Stage;

// import java.time.LocalDate;
// import java.time.format.DateTimeFormatter;
// // import java.util.Comparator; // 实际未使用，但保留以防将来需要
// import java.util.List;
// import java.util.Map;
// import java.util.TreeMap;
// import java.util.stream.Collectors;

// public class AQITrendStatisticsController {

//     @FXML private LineChart<String, Number> aqiTrendChart;
//     @FXML private CategoryAxis xAxis;
//     @FXML private NumberAxis yAxis;

//     private AQIDataService aqiDataService;
//     private DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 用于格式化日期

//     public AQITrendStatisticsController() {
//         this.aqiDataService = new AQIDataService(); // 初始化服务
//     }

//     @FXML
//     public void initialize() {
//         // 设置X轴和Y轴的标签
//         xAxis.setLabel("日期");
//         yAxis.setLabel("平均AQI值");

//         loadAQITrendData();
//     }

//     private void loadAQITrendData() {
//         List<AQIData> allAqiData = aqiDataService.getAllAQIData();

//         // **修改点：在分组前过滤掉 reportTime 为 null 的数据**
//         Map<LocalDate, List<AQIData>> groupedByDate = allAqiData.stream()
//                 .filter(data -> data.getReportTime() != null) // <--- 添加此行，过滤掉 reportTime 为 null 的数据
//                 .collect(Collectors.groupingBy(data -> data.getReportTime().toLocalDate(), TreeMap::new, Collectors.toList()));

//         XYChart.Series<String, Number> series = new XYChart.Series<>();
//         series.setName("每日平均AQI");

//         // 遍历按日期分组的数据，计算每日平均AQI
//         for (Map.Entry<LocalDate, List<AQIData>> entry : groupedByDate.entrySet()) {
//             LocalDate date = entry.getKey();
//             List<AQIData> dataForDate = entry.getValue();

//             // 计算该日期的平均AQI
//             double averageAqi = dataForDate.stream()
//                     .mapToDouble(AQIData::getFinalAqi)
//                     .average()
//                     .orElse(0.0); // 如果没有数据，则为0

//             series.getData().add(new XYChart.Data<>(date.format(dateFormatter), averageAqi));
//         }

//         aqiTrendChart.getData().clear(); // 清除旧数据
//         aqiTrendChart.getData().add(series); // 添加新数据
//     }

//     @FXML
//     private void handleClose() {
//         // 获取当前窗口并关闭
//         Stage stage = (Stage) aqiTrendChart.getScene().getWindow();
//         stage.close();
//     }
// }
